#ifndef __MY_MAZE_CELL__
#define __MY_MAZE_CELL__

#include "StdAfx.h"
#include "TypeDefs.h"

//Maze's cell declaration
class CMazeCell
{
	bool m_hasTopWall;
	bool m_hasLeftWall;

	int  m_MarkerType;//0 - no marker, 1 - trace marker, 2 - route marker

	int  m_LineType;//0 - no   line
		            //1 - Hor  line
				    //2 - Vert line
				    //3 - 9-12 line
				    //4 - 3-12 line
				    //5 - 3-6  line
				    //6 - 6-9  line

	bool m_Banned;

	int  m_row;
	int  m_col;

public :
	CMazeCell ();
	~CMazeCell() {};

	void Draw           (float x_cell_size, float y_cell_size);
	
	void DrawMarker     (float x_cell_size, float y_cell_size, bool hide_marker = false);
	void DrawRouteMarker(float x_cell_size, float y_cell_size, bool hide_marker = false);

	void DrawHorLine (float x_cell_size, float y_cell_size);
	void DrawVertLine(float x_cell_size, float y_cell_size);
	void Draw9_12Line(float x_cell_size, float y_cell_size);
	void Draw3_12Line(float x_cell_size, float y_cell_size);
	void Draw3_6Line (float x_cell_size, float y_cell_size);
	void Draw6_9Line (float x_cell_size, float y_cell_size);

	bool HasTopWall()             { return m_hasTopWall;  };
	bool HasLeftWall()            { return m_hasLeftWall; };

	void SetTopWall(bool factor)  { m_hasTopWall  = factor; };
	void SetLeftWall(bool factor) { m_hasLeftWall = factor; };

	void Ban(bool factor)         { m_Banned      = factor; };
	bool Banned()                 { return m_Banned;      };
	
	int  GetMarker()              { return m_MarkerType;   };
	void SetMarker(int factor)    { m_MarkerType = factor; };

	int  Row()                    { return m_row; };
	int  Col()                    { return m_col; };

	void SetRow(int r)            { m_row = r; };
	void SetCol(int c)            { m_col = c; };
};


#endif